Method and system for processing a request of a customer

ABSTRACT

The invention provides methods, apparatus and systems for securely processing an originator request of a customer. This originator request can be sent to at least one first entity. An example of a method for processing the originator request comprises the steps of a) sending from the customer the originator request to each first entity; b) connecting each first entity to a computation entity; c) each first entity, adding, on receipt of the originator request, information concerning the originator request thereby forming a first-modified request; d) sending at least part of the first-modified request to at least the computation entity; e) the computation entity having received at least part of the first-modified request deriving a computation-entity result from the at least part of the first-modified request; f) sending at least part of the computation-entity result to each first entity; g) each first entity having received at least part of the computation-entity result deriving therefrom a first-entity result and forwarding it at least in part; and h) the customer having received at least part of the first-entity result, deriving therefrom a customer result.

TECHNICAL FIELD

[0001] The present invention relates to secure processing of a customer request. More particularly, the invention relates to cryptographic security of mobile agents.

BACKGROUND OF THE INVENTION

[0002] In the increasingly networked world, mobile code is a programming paradigm that becomes more and more important. It provides a flexible way to structure cooperative computation in distributed systems. At present, the Internet is full of mobile code fragments, such as Java applets, which represent only a simple form of mobile code.

[0003] Mobile agents are mobile code that act autonomously on behalf of a user for continuous collecting, filtering, and processing of information. They combine the benefits of the agent paradigm, such as reacting to a changing environment and autonomous operation, with the features of remote code execution. They operate in computer networks and are capable of moving from server to server as necessary to fulfill their goals. Important applications include mobile computing, where bandwidth is limited, or users are disconnected, data retrieval from large repositories, and configuration management of software and networks. The vision of mobile agents roaming the Internet may soon become reality as the paradigm is incorporated in large-scale applications.

[0004] Mobile code is to be understood as a program that is produced by one entity, called the originator, and is subsequently transferred to another entity, the host, immediately before it is executed by the host. In other words, no manual intervention, such as performing an installation or running a setup routine, is required on behalf of the host; mobile code comes ready to run. Moreover, mobile agents are capable of continued, autonomous operation disconnected from the originator and migrate freely to other hosts during their lifetime. Such agents have also been called itinerant agents. Mobile code is exposed to various security threats: a malicious host may examine the code, try to learn the secrets carried by an agent, and exploit this knowledge in its interaction with the agent to gain an unfair advantage. A host might also try to manipulate the result of a computation.

[0005] There are at least two security problems that arise in the area of mobile code: (1) protecting the host from malicious code and (2) protecting the code from malicious hosts. The first problem has received considerable attention because of the imminent threat of computer viruses and Trojan horses. Current solutions are to run mobile code in a so-called sandbox with fine-grained access control and to apply code signing for exploiting a trust relation with the code producer.

[0006] Protecting mobile code was deemed impossible by some mobile code researchers until T. Sander and C. F. Tschudin realized that tools from theoretical cryptography could be useful to execute mobile code in an encrypted form on an untrusted host, as described in their article “Protecting mobile agents against malicious hosts, Mobile Agents and Security” (G. Vigna, ed.), Lecture Notes in Computer Science, vol. 1419, Springer, 1998. Most protocols for so-called secure computation require several rounds of interaction, however, and are not applicable to achieve secrecy for mobile applications and integrity for their outputs. Sander and Tschudin concluded that only functions representable as polynomials can be computed securely in this manner. Subsequent work of Sander et al. extends this to all functions computable by circuits of logarithmic depth, as disclosed by T. Sander, A. Young, and M. Yung in “Non-interactive CryptoComputing for NC¹”, Proc. 40th IEEE Symposium on Foundations of Computer Science (FOCS), 1999.

[0007] A further form of code is active mobile code that performs some immediate action on the host. Thereby, information about the encrypted computation is often leaked to the host whereby only the originator shall receive any output.

[0008] A basic problem with active mobile code is that a malicious host can observe the output of the computation and simply run the code again with a different input. The only known existing defense for active mobile code against a malicious host uses trusted hardware. This has been proposed and entails running mobile code exclusively inside tamperproof hardware, encrypting it as soon as it leaves the trusted environment.

[0009] U.S. Pat. No. 6,026,374 is related to a system and method using of a trusted third party to provide a description of an information product to potential buyers, without disclosing the entire contents of the information products, which might compromise the interests of the seller. The buyer trusts the third party to give an accurate description of the information that is for sale, while the seller trusts the third party not to reveal an excessive amount of the information product's content. The system can include a seller of information products, a buyer of such products, and a trusted third party summarizer. Each of these operating as a node in a communications network, such as the Internet. A disadvantage of this system and method is that the third party has to be a trusted one and that this third party gets information and learns about everything. This could be dangerous if said third party gets cracked. Moreover, several messages are necessary to process the request of the buyer.

SUMMARY AND ADVANTAGES OF THE INVENTION

[0010] The invention provides methods, apparatus and systems for securely processing an originator request of a customer, i.e. the request being initiated by the customer. This originator request is sent within a mobile code or agent to at least one first entity. An example method for processing the originator request comprises the steps of a) sending from the customer, i.e. from the customer's device, the originator request or each first entity; b) connecting each first entity to a computation entity; c) each first entity adding, on receipt of the originator request, information concerning the originator request thereby forming a first-modified request; d) sending at least part of the first-modified request to at least the computation entity; e) having received at least part of the first-modified request by the computation entity deriving a computation-entity result from the at least part of the first-modified request; f) sending at least part of the computation-entity result to each first entity; g) having received at least part of the computation-entity result by each first entity deriving therefrom a first-entity result and forwarding it at least in part; and h) having received at least part of the first-entity result by the customer deriving therefrom a customer result.

[0011] In an advantageous embodiment, that only the customer learns the result of the calculation, whereby other entities or hosts learn nothing at all except for results which are designated to them. The mobile code or agent comprising the originator request is sent around a network to several entities whereby the code or at least fragments thereof can be securely executed without any additional client hardware at the first entity. Security is obtained through the computation entity that is a generic independent entity. This independent entity can be a computation service that performs an encrypted computation on behalf of the mobile agent, but does not learn anything about the encrypted computation. The independent entity can serve many different applications whereby nothing about its usage is necessary to know before deploying it. Privacy as well as authenticity for the mobile agents can be achieved. Moreover, the computation service itself does not learn anything about the computation, assumed it does not collude with the code originator CO or the first entity.

[0012] In same embodiments: the independent entity is universal rather than bound to a particular service or to an application context. For example, secure computation servers can be set up and operated by independent entities.

[0013] A method and system of this invention may be based on software and commodity hardware and therefore may be less expensive to build and operate than any solution involving specialized hardware.

[0014] A cryptographic operation can be applied to the mobile agent comprising the request or a result. Thus, integrity for the mobile agent can be advantageously guaranteed.

[0015] When the originator request is formed by applying an encrypted circuit construction, then the advantage occurs that a secure computation of the request can be achieved and the originator of that request can define how much information an entity shall receive.

[0016] The originator request may comprise a function in encrypted form. This is advantageous, because then other entities processing the originator request can not derive useful information therefrom except results which are designated to those entities.

[0017] The originator request, the first-modified request, the computation-entity result, and the first-entity result may comprise an encrypted part. This is advantageous, because then sensitive information is protected and is not readable as plain text.

[0018] The originator request may comprise an offer or any other legal instrument. It may also comprises purchase information or customer information, such as the address for delivering or the credit card number for financial transactions.

[0019] The first entity comprises a web server offering a service or goods. This service can merely be everything including sale, lease, license, or financing transaction.

[0020] The first-entity result may comprise a customer information concerning acceptance of the originator request. This is advantageous, because then the first-entity can deliver its service or goods immediately and initiate the necessary transactions.

[0021] The customer result may comprise the first-entity information concerning acceptance of the originator request. The customer therefore knows that its originator request will be fulfilled and no further actions are necessary.

DESCRIPTION OF THE DRAWINGS

[0022] Preferred embodiments of the invention are described in detail below, by way of example only, with reference to the following schematic drawings.

[0023]FIG. 1 shows an illustration of a communication flow according to the present invention.

[0024]FIG. 2 shows a more detailed illustration of a communication flow.

[0025]FIG. 3 shows another illustration of a communication flow.

[0026] The drawings are provided for illustrative purpose only and do not necessarily represent practical examples of the present invention to scale.

DESCRIPTION OF THE INVENTION

[0027] With general reference to the figures the features of a method and system for processing a request of a customer using cryptographic functions is described in more detail below. When referring to the word customer, it appears obvious that a device, such as a computer or mobile appliance, used by the customer is meant.

[0028] A defining element of a mobile code or agent computation is that it proceeds autonomously and independently of the originator of the code. The secure mobile agent computation is modeled in principle as depicted in FIG. 1, whereby the boxes are labeled according to the description below.

[0029] There are a code originator CO, and l hosts, hereinafter referred to as entities H₁, . . . , H_(l), on which the mobile agent, hereinafter short agent, runs.

[0030]FIG. 1 shows a network, such as the Internet, whereby the code originator CO is connected to a first entity H₁, that is further connected to a second entity H₂. The second entity H₂ is connected to an entity labeled with H_(j) that further has a connection to an entity labeled with H_(j+1), whereby several other entities are possible in-between as indicated by the dotted line. The entity H_(j+1) is connected to an entity labeled with H_(l) that in the following is connected back to the code originator CO. Each of the entities H₁, H₂, . . . , H_(j), H_(j+1), H_(l) is connected to a computing entity T.

[0031] The code originator CO as well as each entity H₁, H₂, . . . , H_(j), H_(j+1), H_(l) sends and receives only a single message, that comprises the agent. The message that the code originator CO sends to the first entity H_(l) is denoted by m_(o) and the message that a further entity H_(j) sends to H_(j+1) by m_(j) for j=1, . . . , l−1, and the message that the last entity H_(l) returns to the code originator CO is denoted by m_(l).

[0032]FIG. 2 depicts a more detailed illustration of the communication flow as shown in FIG. 1. The code originator CO, that here is a customer CUS, is connected to the first entity, here labeled with H, that further is connected to the computing entity T. The method for processing an originator request OR, e.g. a price request including a threshold for a product, of the customer CUS runs as follows. The customer CUS sends the originator request OR to the first entity H. This is indicated by the arrow labeled with m_(OR). The first entity H offers several products to a particular price. The first entity H connects to the computation entity T and adds, on receipt of the originator request OR, information I concerning the originator request OR, e.g. a price it is willing to accept, thereby forming a first-modified request FMR. This first-modified request FMR is sent to the computation entity T as indicated by the arrow labeled with m_(FMR). If the computation entity T has received the first-modified request FMR it derives therefrom a computation-entity result CER without learning anything from this computation. Afterwards, the computation-entity result CER is sent back to the first entity H as indicated by the arrow labeled with m_(CER). If the first entity H has received the computation-entity result CER it derives therefrom a first-entity result FER and forwards this back to the customer CUS as indicated by the arrow labeled with m_(FER). The customer CUS is able to derive from the first-entity result FER a customer result CR. This customer result CR provides the information to the customer CUS whether or not his originator request OR has been fulfilled. The first entity H knows form the first-entity result FER whether or not its offer is acceptable to the customer CUS. The originator request OR may contain information about the customer CUS, i.e. address, credit card information, which allows the first entity H to deliver the requested product immediately.

[0033] In the embodiment described above, the mobile agent visits several vendor sites and compares offers. The originator request OR does not only be based on price, but can also include other attributes. The originator or customer CUS wants to maintain the privacy of his preferences, but a shop has an interest to learn the buyer's strategy as well as information about other vendor's offers. For complex offers where the price is determined individually for each customer based on its needs, such as in the insurance market, the vendor wants to keep its method of calculating the price secret. All these requirements can be fulfilled by the described scheme for secure mobile code.

[0034] In another embodiment, a shopping agents is traveling around the network and collects offers from several vendors or entities H₁, H₂, . . . , H_(j), H_(j+1), H_(l), whereby a prior agreement on the data format of the offers is helpful.

[0035]FIG. 3 shows another embodiment using the same or similar parts as shown in FIGS. 1 and 2. The difference is the code originator CO sends directly to each entity H₁, H₂, . . . , H_(l) its originator request OR, whereby the originator request OR can be the same or different to each entity H₁, H₂, . . . , H_(l).

[0036] In a further embodiment an electronic negotiation is described. The electronic negotiation between a buyer and a single vendor can take place using the scheme for secure mobile code that visits a single host or entity H. Typically, the vendor would act as the originator CO and download an applet to the buyer's browser (as is already quite common on the Internet). The applet is executed using the help of the computation entity T by the buyer and the offer is displayed to the buyer. The vendor may obtain some information as well, which it would spell out clearly in a “privacy statement” accompanying the applet.

[0037] Auctions with generalized bidding strategies present an interesting application area for secure mobile agents. Bidding agents can implement a complex strategy being a function of time and other participants' behavior, which gives the bidder more flexibility compared to traditional single-parameter auctions based purely on price. As the value of the lots is interrelated, a bidder is interested to define his bidding behavior as dynamically as possible, for example making the valuation of a lot depend on other winning bids that he observed in the previous rounds. If the bidders can express their strategies as a computable function, then one may construct a circuit to compute the auction function, i.e., the outcome of the auction, with the strategies as the private inputs of all participants. This would require an auction agent that visits each bidder only once. However, in the likely case that the bidders are unable to express their strategies mathematically, each round of the auction could also be performed securely by an auction applet that visits each bidder once and returns to the auctioneer. There it outputs the winning bids or the end of the auction if the bids did not exceed the minimum increment. If the scheme for secure mobile computing is used, then there is no single entity H₁, H₂, . . . , H_(j), H_(j+1), H_(l) that sees all bids (like the auctioneer, its computer system, or its operators). Generalized auctions are common in electricity markets, equities trading, bandwidth auctions, and transportation exchanges, and bidders often have preferences over combination of items.

[0038] In the following, implementation details are described.

[0039] Computation: Let the state of the mobile agent be an element of a set X. Its initial state x_(o) is determined by O. Let the input by H_(j) be an element of a set Y_(j) and the output to H_(j) an element of Z_(j). The agent computation on the entity H_(j) is represented by two functions

g_(j): X×Y_(j)→X and h_(j): X×Y_(j)→Z_(j)

[0040] that determine the new state x_(j)=g_(j)(x_(j−1),y_(j)) of the agent and the output z_(j)=h_(j)(x_(j−1),y_(j)). O obtains the final state ξ=x₁εX of the agent. The functions g_(j) and h_(j) are known to all entities H₁, . . . , H_(l).

[0041] A mobile computing scheme comprises 2l+2 algorithms A_(o), A₁, . . . , A_(l), B₁, . . . , B_(l), and D such that for all j−1, . . . , l and x₀εX, y_(j)εY_(j), and with

m ₀ =A ₀(x ₀)

m _(j) =A _(j)(m _(j−1) ,y _(j)) for j=1, . . . , l

z _(j) =B _(j)(m _(j−1) ,y _(j)) for j=1, . . . , l

ξ=D(m _(l))

[0042] the following two conditions Correctness and Privacy hold.

Correctness. ξ=g _(l)(x _(l−1) ,y _(l)) and z _(j) =h _(j)(x _(j−1) ,y _(j)) for j=1, . . . , l using

x _(j′) =g _(j′)( . . . (g ₂(g ₁(x ₀ ,y ₁),y ₂) . . . ),y _(j′)) for j′=1, . . . , l−1.

[0043] Privacy. The inputs, outputs, and the computations of all entities remain hidden from the originator and from all other entities, except for what follows from their outputs. O learns only ξ but nothing else about any y_(j) than what follows from x₀ and ξ, and similarly, H_(j) learns only z_(j) but nothing about x₀ and y_(j′) for j′<j than what follows from z_(j) and y_(j).

[0044] For simplicity reasons, the above scheme assumes that the order in which the agent visits all entities is fixed. It is extended to allow for the sequence to depend on z_(j) by introducing a function π: Z_(j)→{1, . . . , l} and sending the agent to H_(π(z) _(j) ₎ from H_(j). In the case of mobile code applications with a single host, i.e. the first entity H only, the function g yields O's output ξ and h gives H's output z.

[0045] A computation entity T, that can be a generic secure computation service, is provided. This computation entity T is on-line and connected to all entities H₁, . . . , H_(l) or hosts running agent applications and is at their disposal for securing agent computations. The computation entity T itself does not gain any information about the computation, no matter how it behaves, under the assumptions that (1) the computation entity T does not collude with the originator against any entity, and (2) the computation entity T does not collude with any entity against the originator or against any other entity. All computations proceed with minimal or no interaction. The scheme is generic and not bound to any particular application. Hence the service of the computation entity T might be offered as a public service for “secure mobile agent computation” on the Internet. Clients or customers who use this service in the role of O or H (e.g., for comparison shopping) do not have to fear that the computation entity T has “second thoughts” trying to violate their privacy (e.g., of customer profiling and collecting marketing data). Moreover, the computation entity T itself has an interest to maintain its reputation as a security provider.

[0046] The scheme is based on functions in encrypted form. For example, encrypting a binary digital circuit realizes the part of the agent computation. This can be realized by an encrypted circuit construction as described in the following.

[0047] Encrypted Circuit Construction

[0048] The encrypted circuit construction of Yao, as introduced by A. C. Yao in his article “How to generate and exchange secrets” at Proc. 27th IEEE Symposium on Foundations of Computer Science (FOCS), 1986, pp. 162-167, is an interactive protocol for secure function evaluation between two parties or entities. This is described for a binary function g(•,•) and parties Alice (with input x) and Bob (with input y). Bob receives the output z=g(x,y) but learns nothing else and Alice learns nothing at all.

[0049]8 Let (x₁, . . . ,x_(n) _(x) ), (y₁, . . . ,y_(n) _(y) ), and (z₁, . . . ,z_(n) _(z) ) denote the binary representations of x,y, and z, respectively, and let C denote a polynomial-sized binary circuit computing g. The components of Yao's construction are (I) a first algorithm construct that Alice uses to construct an encrypted circuit, (II) a transfer protocol between Alice and Bob, and (III) a second algorithm evaluate allowing Bob to retrieve g(x, y). More precisely, these procedures are as follows.

[0050] (I) The probabilistic first algorithm construct(C) takes the circuit as input and outputs the tuple

(C, L, K, U),

[0051] where C may be viewed as an encrypted version of the n_(x)+n_(y)-input circuit C(•,•) and where L, K, and U denote lists of so called key pairs

L=(L _(1,0) ,L _(1,1)), . . . ,(L _(n) _(x,) ₀ ,L _(n) _(x,) ₁)

K=(K _(1,0) ,K _(1,1)), . . . ,(K _(n) _(y,) ₀ ,K _(n) _(y,) ₁)

U=(U _(1,0) ,U _(1,1)), . . . ,(U _(n) _(z,) ₀ ,U _(n) _(z,) ₁)

[0052] corresponding to x, y, and z, respectively.

[0053] In order to compute C(x, y) from the encryption C, Bob needs one “key” for each input bit: L_(i,b) corresponds to input bit x_(i)=b and K_(i,b) corresponds to input bit y_(i)=b. The keys U_(i,0) and U_(i,1) represent the output bits of the encrypted circuit, i.e., if evaluation produces U_(i,b), then the output bit z_(i) is set to b.

[0054] The particular method in which C is encrypted ensures that for every gate in the circuit, given two keys representing its input bits, the key representing the resulting output bit can be readily computed, but no information is revealed about which cleartext bit it represents.

[0055] (II) Alice and Bob engage in a protocol for oblivious transfer, for example, as disclosed by S. Even, O. Goldreich and A. Lempel in “A randomized protocol for signing contract”, Communications of the ACM 28 (1985), 637-647, or as disclosed by G. Brassard, C. Crépeau, and J.-M. Robert in “Information-theoretic reductions among disclosure problems”, Proc. 27th IEEE Symposium on Foundations of Computer Science (FOCS), 1986. This is an interactive two-party protocol for a sender with input two messages m₀ and m₁ and a chooser with input a bit σ. At the end, the chooser receives m_(σ) but does not learn anything about m_(σ⊕1), and the sender has no information about σ.

[0056] More precisely, Alice acts as the sender and Bob obtains for every bit y_(i) of his input the value K_(i) ¹=K_(i,y) _(i) but learns nothing about K_(i,y) _(i) _(⊕1). At the same time, Alice learns nothing about y_(i).

[0057] In addition, Alice computes the keys representing x as L′_(i)=L_(i,x) _(i) for i=1, . . . , n_(x) and sends C,L′₁, . . . ,L′_(n) _(x) , U to Bob.

[0058] (III) The second algorithm evaluate(C,L′₁, . . . , L′_(n) _(x) , K′₁, . . . , K′_(n) _(y) ) takes as inputs the encrypted circuit, a representation of x, and a representation of y by the respective keys. It outputs the keys U′₁, . . . , U′_(n) _(z) from which Bob can recover z, and if Alice and Bob obey the protocol, then z=g(x, y).

[0059] Implementing the first and second algorithms construct and evaluate can be achieved by pseudo-random functions, as for example proposed by O. Goldreich, S. Goldwasser, and S. Micali in “How to construct random functions”, Journal of the ACM 33 (1986), no. 4, 792-807, which are realized in practice by block ciphers. Block ciphers are very fast cryptographic primitives, even if implemented in software.

[0060] The following first describes how to use the encrypted circuit construction for realizing secure mobile code computation with a single or first entity. An extension to multiple entities is considered after that. The computation entity T publishes the public key of an encryption scheme. The corresponding encryption and decryption operations are denoted by E_(T)(•) and D_(T)(•), respectively. All entities can communicate over secure authenticated links, which could be realized by using standard public-key encryption and digital signatures.

[0061] The basic scheme is that O constructs an encrypted circuit C computing the two values ξ and z. The code originator CO sends C to the first entity H, but encrypts all keys in K for T and does not include the key pairs in U which correspond to ξ (denoted by U_(x)) so that the first entity H will not learn anything about ξ. Next, the first entity H selects from K the encrypted keys representing y and invokes the computation entity T to decrypt them in a single round of interaction. Then, the first entity H evaluates the circuit and obtains z; it also returns the keys in the circuit output representing ξ to O, who can determine ξ from this.

[0062] Let C be the binary circuit computing (ξ,z)=(g(x,y), h(x,y)) from the same inputs with n_(x)+n_(y) input bits x₁i, . . . ,x_(n) _(x) ,y₁, . . . ,y_(n) _(y) and n_(x)|n_(z) output bits ξ₁, . . . , ξ_(n) _(x) , z₁, . . . , z_(n) _(z) , slightly modifying the notation from the previous section. The scheme proceeds in five steps 1) to 5), as described in the following.

[0063] 1) O chooses a string id that uniquely identifies the computation, e.g., containing the name of O, a description of g and h, and a sequence counter. O invokes construct(C) and obtains (C, L, K, U) as above with U consisting of n_(x)+n_(z) key pairs in total. U_(x) denotes the pairs in U with indices 1, . . . , n_(x) and U_(z) denotes those with indices n_(x)+1, . . . , n_(x)+n_(z).

[0064] For i=1, . . . , n_(y) and b ε{0,1}, it computes

{overscore (K)} _(i,b) =E _(T)(id∥i∥K _(i,b)).

[0065] Let K denote the list of pairs of all such {overscore (K)}. Then O lets L′_(i)=L_(i,x) _(i) as above for i=1, . . . , n_(x) and sends

id, C, L′₁, . . . , L′_(n) _(x) ,K, U

[0066] to the first entity H.

[0067] 2) The first entity H sets {overscore (K)}′_(i)={overscore (K)}_(i,y) _(i) for i=1, . . . , n_(y) to be the encryptions representing its input y and sends them to the computation entity T along with id.

[0068] 3) The computation entity T decrypts {overscore (K)}′_(i) for i=1, . . . , n_(y) and verifies that the ith decrypted string contains the identifier id and index i. If all checks are successful, the computation entity T returns the decrypted keys K′₁, . . . , K′_(n) _(y) to the first entity H.

[0069] 4) The first entity H invokes the second algorithm evaluate(C, L′₁, . . . ,L′_(n) _(x) ,K′₁, . . . ,K′_(n) _(y) ) and obtains U′₁, . . . , U′_(n) _(x) _(+n) _(z) . Then, the first entity H determines z=(z₁, . . . ,z_(n) _(z) ) such that U_(n) _(x) _(+i,z) _(i) =U′_(n) _(x) _(+i) for i=1, . . . , n_(z) and forwards the remaining values U′₁, . . . , U′_(n) _(x) to the code originator CO.

[0070] 5) The code originator CO determines its output ξ=(ξ₁, . . . ,ξ_(n) _(x) ) such that U_(i,ξ) _(i) =U′_(i) for i=1, . . . , n_(x).

[0071] For increased security, the computation entity T should use a public-key cryptosystem that is secure against adaptive chosen-ciphertext attacks, which means nonmalleable, as described by D. Dolev, C. Dwork, and M. Naor in “Non-malleable cryptography”, SIAM Journal on Computing 30 (2000), no. 2, 391-437. The code originator CO and the first entity H should also commit to their inputs. In a practical system, all of these can be realized in the so-called “random oracle model” as described, for example, by M. Bellare and P. Rogaway in “Random oracles are practical: A paradigm for designing efficient protocols”, Proc. 1st ACM Conference on Computer and Communications Security, 1993. using a secure hash function. In this case, the public-key encryption scheme and the pseudo-random functions for circuit encryption can be implemented with discrete logarithms based on the hardness of the Diffie-Hellman problem, as described by M. Naor and O. Reingold in “Number-theoretic constructions of efficient pseudo-random functions”, Proc. 38th IEEE Symposium on Foundations of Computer Science (FOCS), 1997.

[0072] In the following, an extension of the above-described method is disclosed in order to achieve a general mobile computing scheme with multiple entities H₁, . . . , H_(l), as indicated in FIG. 1. The generalization is the natural one in which each entity executes steps 2) to 4) of the basic scheme above and sends the agent to the next entity afterwards.

[0073] Thereby, the code originator CO prepares one encrypted circuit C for each entity H₁, . . . , H_(l) and incorporates the encrypted state x_(j−1) from C^((j−1))into C^((j)) for j>1. This is achieved by using the output keys U′₁ ^((j−1)), . . . , U′_(n) _(x) ^((j−1)) from C^((j−1)) for decrypting a hidden representation of the inputs to C^((j)).

[0074] In a symmetric cryptosystem with encryption and decryption operations under key k denoted by E_(k)(•) and D_(k)(•), respectively, the cryptosystem includes sufficient redundancy such that given a potential key U and a ciphertext c one can determine with high probability whether c results from an encryption under U. The modifications to the scheme are as follows.

[0075] 1a) The code originator CO obtains C^((j)), L^((j)), K^((j)), U^((j)), and K ^((j)), for j=1, . . . , l in the same way as for C above. However, the code originator CO selects the values L′_(i)=L′_(i,x) _(i) ⁽¹⁾ only for C⁽¹⁾. The identifier in the jth stage is set to id∥j. The code originator CO also prepares two encryptions

E_(U) _(i,0) _(^((j−1))) (L_(i,0) ^((j))) and E_(U) _(i,1) _(^((j−1))) (L_(i,1) ^((j)))

[0076] for each j>1 and i=1, . . . , n_(x), and randomly permutes them before assigning them to V_(i,0) ^((j)) and V_(i,1) ^((j));call the list of such pairs V^((j)).

[0077] Then, the code originator CO sends

id,L′ ₁ , . . . ,L′ _(n) _(x) ,C ⁽¹⁾ ,K ⁽¹⁾ ,U _(z) ⁽¹⁾ and C ^((j)) ,K ^((j)) ,U _(z) ^((j)) ,V ^((j)) for j=2, . . . , l

[0078] to the first entity H₁ within a single message.

[0079] 2a) For j>1, when H_(j) runs step 2 of the basic scheme, is receives V^((j)) and U′₁ ^((j−1)), . . . , U′_(n) _(x) ^((j−1)) from H_(j−1), which has before evaluated C^((j−1)).

[0080] Each entity interprets each U′_(i) ^((j−1)) as a symmetric key to E, determines which one of the ciphertexts V_(i,0) ^((j)) and V_(i,1) ^((j)) it decrypts, and then decrypts the one that matches. This yields K_(i) ^((j)), an oblivious representation of the ith bit in the current state x_(j) of the agent. Those keys are then used to evaluate C^((j)).

[0081] 3a) When H_(j) has obtained its output from evaluating C^((j)), it forwards all data that it has received from H_(j 1), together with U′₁ ^((j)), . . . , U′_(n) _(s) ^((j)), to H_(j+1). At the end of the circle, H₁ returns U′₁ ^((l)) to the code originator CO.

[0082] The Computation Entity T Generates the Code

[0083] In a variation where the roles of O and T are switched, the computation entity T generates the encrypted circuit. Because it is trusted to follow the protocol one does not have to add a costly zero-knowledge proof for correctness of the whole circuit. Therefore, the operations of the other entities and the corresponding proofs ensuring robustness become much simpler. The computation entity T has to know g and h for constructing the circuit, but it may obtain a description of C from O in a first protocol message.

[0084] A three-party oblivious transfer protocol is used, as introduced by M. Naor, B. Pinkas, and R. Sumner in “Privacy preserving auctions and mechanism design”, Proc. 1st ACM Conference on Electronic Commerce, 1999, in which the role of the chooser is separated among the chooser and a third party, called the receiver. Compared to the standard notion of oblivious transfer, the receiver gets the output message m_(σ)specified by the chooser, who itself learns nothing. This so-called “proxy” oblivious transfer can be realized using three message flows: from chooser to receiver and from receiver to sender and back.

[0085] The protocol uses also a one-round implementation of standard oblivious transfer between two parties, which can be realized using the method of C. Cachin, J. Camenisch, J. Kilian, and J. Müller, published in their article “One-round secure computation and secure autonomous mobile agents”, at Proc. 27th International Colloquium on Automata, Languages and Programming (ICALP) (U. Montanari, J. P. Rolim, and E. Welzl, eds.), Lecture Notes in Computer Science, vol. 1853, Springer, July 2000, pp. 512-523.

[0086] As in the basic scheme the component of a encrypted circuit construction is applied. The protocol is described for the basic case of mobile code with a single entity H. Suppose O employs a public-key encryption scheme with encryption and decryption operations denoted by E_(O)(•) and D_(O)(•), respectively. O starts the computation as the chooser in n_(x) parallel three-party oblivious transfers, one for each bit of x. It sends these hidden choices to H, who acts as the receiver in the three-party oblivious transfers, together with C and E_(O)(•). H forwards the appropriate data to T, who acts as the sender; it will send the key pairs L in the three-party oblivious transfer. Furthermore, H also prepares its input to n_(y) parallel one-round oblivious transfers (playing the role of the chooser), one for each bit of y. It sends these to T, together with the descriptions of C and E_(O)(•); T will send the key pairs K in the one-round oblivious transfers.

[0087] T invokes construct(C) to obtain C and the key pairs L, K, and U. It replies to H withE_(O)(U_(x)), C, U, and the final flows in all oblivious transfer protocols.

[0088] From this, H can determine the keys L′₁, . . . ,L′_(n) _(z) representing x and the keys K′₁, . . . ,L′_(n) _(y) representing y. It runs evaluate(C,L′₁, . . . ,L′_(n) _(x) ,K′₁, . . . ,K′_(n) _(y) ) to obtain U′₁, . . . , U′_(n) _(x) _(+n) _(z) as above. Then it determines its output z from U′_(n) _(z) ₊₁, . . . , U′_(n) _(x) _(+n) _(z) and from U_(z), and it forwards U′₁, . . . , U′_(n) _(x) together with E_(O)(U_(x))to O. This enables O to obtain its output ξ.

[0089] The following shows an extension of the protocol from a single host or first entity H₁ to l hosts H₁, . . . , H_(l). The protocol starts as before for the first host. However, the steps for H₂, . . . , H_(l) are slightly different: three-party oblivious transfer and encryption under E_(O) are not used. Instead, T encrypts the keys L^((j)) in the input of C^((j)) and representing the state x_(j−1) of the agent under the output keys in U^((j−1)) from C^((j−1)) as before V^((j)). The keys U^((j−1)) can be stored by T between step j−1 and step j or they can be sent along with the protocol flow and are transmitted to T via H_(j−1) and H_(j), whereby they are encrypted byE_(T)(•). In addition, the last host obtains U_(x) encrypted with E_(O)(•) from T and forwards this to O as above.

[0090] The communication pattern is the same as in the basic scheme: there is one message from O to H₁, one from each H_(j−1) to H_(j) and one from H_(l) to O, plus one communication flow between each host and the computation entity T Robustness can be added by using non-malleable public-key encryption schemes and non-interactive zero-knowledge proofs. However, the result will be much more practical because zero-knowledge proofs are not needed for the potentially large encrypted circuit. Moreover, the encrypted circuit construction can be implemented by a block cipher instead of public-key operations.

[0091] It is noted that any disclosed embodiment may be combined with one or several of the other embodiments shown and/or described. This is also possible for one or more features of the embodiments. The present invention can be realized in hardware, software, or a combination of hardware and software. Any kind of computer system—or other apparatus adapted for carrying out the method described herein—is suited. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods.

[0092] Computer program means or computer program in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. 

We claim:
 1. A method for processing an originator request of a customer, the originator request being sendable to at least one first entity the method comprising: a) sending from said customer said originator request to said at least one first entity; b) connecting said at least one first entity to a computation entity; c) said at least one first entity adding, on receipt of the originator request, information concerning said originator request thereby forming a first-modified request; d) sending at least part of said first-modified request to at least said computation entity; e) said computation entity having received at least part of said first-modified request deriving a computation-entity result from said at least part of said first-modified request (; f) sending at least part of said computation-entity result to said at least one first entity; g) said at least one first entity having received at least part of said computation-entity result by deriving therefrom a first-entity result and forwarding it at least in part; and h) said customer having received at least part of said first-entity result by said customer deriving therefrom a customer result.
 2. A method for processing an originator request of a customer, the method comprising: a) receiving from said customer said originator request and adding information concerning said originator request thereby forming a first-modified request; b) sending at least part of said first-modified request to at least a computation entity that derives a computation-entity result therefrom and returns it at least in part; and c) said first entity having received at least part of said computation-entity result by deriving therefrom a first-entity result and forwarding it at least in part, whereby said customer is able to derive a customer result from said at least part of said first-entity result.
 3. A method for processing a first-modified request from at least one first entity comprising at least part of an originator request from a customer by a computation entity, the method comprising: a) receiving said first-modified request from said at least one first entity; b) deriving a computation-entity result from at least part of said first-modified request; c) sending at least part of said computation-entity result to said at least one first entity that derives therefrom a first-entity result and forwards it at least in part, whereby said customer is able to derive a customer result from said at least part of said first-entity result.
 4. A method for processing an originator request, the method comprising: a) obtaining said originator request; b) sending said originator request to at least one first entity, whereby said at least one first entity adds its information concerning said originator request thereby forming a first-modified request, and sends at least part of said first-modified request, to at least a computation entity that derives therefrom a computation-entity result, at least part of said computation-entity result being sent to said at least one first entity that derives therefrom a first-entity result, and forwards it at least in part, and c) having received said at least part of said first-entity result deriving therefrom a customer result.
 5. The method according to claim 1, further comprising the step of applying a cryptographic operation to the requests and to the results.
 6. The method according to claim 4, whereby the step of forming the originator request comprises applying an encrypted circuit construction.
 7. A computer program element comprising program code means for performing a method of claim 1 when said program is run on a computer.
 8. A computer program product stored on a computer usable medium, comprising computer readable program means for causing a computer to perform a method according to claim
 1. 9. A system for processing an originator request, comprising: a customer connected to at least one first entity; and a computation entity connected to at least said first entity; wherein said customer sends said originator request to said at least one first entity that adds information concerning said originator request thereby forming a first-modified request and sends at least part of said first-modified request to at least said computation entity, said computation entity derives a computation-entity result from said at least part of said first-modified request, and sends at least part of said computation-entity result to said at least one first entity, said at least one first entity derives a first-entity result from said at least part of said computation-entity result and forwards it at least in part, said customer being able to derive a customer result from said at least part of said first-entity result.
 10. The system according to claim 9, wherein the originator request comprises a function in encrypted form.
 11. The system according to claim 10, wherein the function in encrypted form comprises an encrypted circuit construction.
 12. The system according to claim 9, wherein the originator request is part of a mobile code.
 13. The system according to claim 9, wherein the originator request, the first-modified request, the computation-entity result, and the first-entity result comprise an encrypted part.
 14. The system according to claim 9, wherein the originator request comprises one or more pikes of information of: an offer, customer information, and purchase information.
 15. The system according to claim 9, wherein the first entity comprises at least one of: a web server offering a service, and a customer information concerning acceptance of the originator request.
 16. The system according to claim 9, wherein the customer result comprises first-entity information concerning acceptance of the originator request.
 17. An article of manufacture comprising a computer usable medium having computer readable program code means embodied therein for causing processing of an originator request, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim
 1. 18. An article of manufacture comprising a computer usable medium having computer readable program code means embodied therein for causing processing of an originator request, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim
 2. 19. An article of manufacture comprising a computer usable medium having computer readable program code means embodied therein for causing processing a first-modified request, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim
 3. 20. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for processing of an originator request, said method steps comprising the steps of claim
 1. 21. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for processing of an originator request, said method steps comprising the steps of claim
 2. 22. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for processing a first-modified request, said method steps comprising the steps of claim
 3. 23. A computer program product comprising a computer usable medium having computer readable program code means embodied therein for causing processing of an originator request, the computer readable program code means in said computer program product comprising computer readable program code means for causing a computer to effect the functions of claim
 9. 